package com.school.sports.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.school.sports.entity.FileInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文件信息表 Mapper接口
 */
@Mapper
public interface FileInfoMapper extends BaseMapper<FileInfo> {

    /**
     * 分页查询文件信息（带用户名）
     * @param page 分页对象
     * @param fileInfo 查询条件
     * @return 分页结果
     */
    IPage<FileInfo> selectFilePageWithUserName(Page<FileInfo> page, @Param("fileInfo") FileInfo fileInfo);

    /**
     * 根据MD5值查询文件
     * @param fileMd5 MD5值
     * @return 文件信息
     */
    FileInfo selectByMd5(@Param("fileMd5") String fileMd5);

    /**
     * 根据关联信息查询文件列表
     * @param relatedType 关联类型
     * @param relatedId 关联ID
     * @return 文件列表
     */
    List<FileInfo> selectByRelatedInfo(@Param("relatedType") String relatedType, @Param("relatedId") Long relatedId);

    /**
     * 根据用户ID查询文件列表
     * @param uploadUserId 上传用户ID
     * @return 文件列表
     */
    List<FileInfo> selectByUploadUserId(@Param("uploadUserId") Long uploadUserId);

    /**
     * 统计用户上传的文件总大小
     * @param uploadUserId 上传用户ID
     * @return 文件总大小（字节）
     */
    Long selectTotalSizeByUserId(@Param("uploadUserId") Long uploadUserId);
}